package config

import (
	"encoding/json"
	"errors"
	"fmt"
	"sync"
)

/*
 * Mongodb 配置中心
 */

// Load 读取配置项
func Load(name string, v interface{}) {
	vBytes, ok := cache.Load(name)
	if !ok || vBytes == nil {
		panic(errors.New(fmt.Sprintf("ERROR:未读取到【%s】配置，请检查项目配置", name)))
	}

	err := json.Unmarshal(vBytes.([]byte), v)
	if err != nil {
		panic(errors.New(fmt.Sprintf("ERROR:无法解析【%s】配置，请检查类型是否正确", name)))
	}
	return
}

// GetCache 读取所有配置项
func GetCache() sync.Map {
	return cache
}

// GetItem 读取其中一项配置
func GetItem(name string) (v []byte) {
	value, ok := cache.Load(name)
	if ok {
		v = value.([]byte)
	}
	return
}
